package com.zsp.comic.util;

import com.alibaba.fastjson.JSON;
import com.zsp.comic.config.JWTConfig;
import com.zsp.comic.entity.SelfUserEntity;
import com.zsp.comic.entity.User;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;

/**
 * @author gan
 * @create 2021-01-13 11:41
 */
public class JWTTokenUtil {

    public static final long EXPIRE = 604800; //7天

    /**
     * 私有化构造器
     */
    private JWTTokenUtil(){}

    /**
     * 生成Token
     * @author zwq
     * @date 2020/4/4
     * @param selfUserEntity
     * @return
     **/
    public static String createAccessToken(SelfUserEntity selfUserEntity){
        // 登陆成功生成JWT
        JwtBuilder jwtBuilder = Jwts.builder()
                // 放入用户名和用户ID
                .setId(selfUserEntity.getUserId()+"")
                // 主题
                .setSubject(selfUserEntity.getUsername())
                // 签发时间
                .setIssuedAt(new Date())
                // 签发者
                .setIssuer("gan")
                // 自定义属性 放入用户拥有权限
                .claim("authorities", JSON.toJSONString(selfUserEntity.getAuthorities()))
                // 失效时间
//                .setExpiration(new Date(System.currentTimeMillis() + EXPIRE))
                // 签名算法和密钥
                .signWith(SignatureAlgorithm.HS256, "9277");  //这里似乎只能是数字作为密钥

        return jwtBuilder.compact();
    }
}
